feat(ci): eval-canary dispatch inputs — staged ranking-config override + branch evals (ADDENDUM 4 B-PR-1 / D-1)#1003
Conversation
…ranch evals (ADDENDUM 4 B-PR-1 / D-1) - rag_ranking_config input stages a RAG_RANKING_CONFIG JSON override for a single live eval run without touching code defaults — the documented Phase B rollout path. A validation step fails loudly on malformed JSON because resolveRankingConfig silently falls back to production defaults, which would turn a staged-weights eval into an accidental baseline - ref input runs the eval from a branch (Phase D-1), closing the 'CI cannot run the golden eval pre-merge' gap; dispatch already requires write access - schedule runs are unaffected: both inputs resolve empty -> checkout default sha + RAG_RANKING_CONFIG unset Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe Eval Canary workflow now accepts optional ranking configuration and branch/SHA inputs, validates non-empty ranking overrides as JSON objects, and checks out the selected reference. The branch review ledger documents these inputs and dispatch constraints. ChangesEval Canary overrides
Estimated code review effort: 2 (Simple) | ~10 minutes Sequence Diagram(s)sequenceDiagram
participant Dispatcher
participant Eval_Canary
participant Ranking_Config_Validator
participant actions_checkout
Dispatcher->>Eval_Canary: submit optional rag_ranking_config and ref
Eval_Canary->>Ranking_Config_Validator: validate non-empty ranking override
Ranking_Config_Validator-->>Eval_Canary: accept object or fail
Eval_Canary->>actions_checkout: checkout selected ref or default
Suggested reviewers: ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…ase E instrument) Adds an answer_quality_eval dispatch input to eval-canary that runs the 30-case eval:answer-quality fixture (five quality metrics + per-intent structural targeting) after the eval:quality gate subset. The instrument existed but was never run in CI. Dispatch-only and default-off: scheduled runs and existing dispatch shapes are byte-identical, and the step is informational by design (exit 0 without --targeting-floor) so quality gates stay owned by eval:quality. The tee'd log rides the existing artifact upload. Follows the #1003 input-only precedent; retrieval steps untouched. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
…ase E instrument) (#1013) Adds an answer_quality_eval dispatch input to eval-canary that runs the 30-case eval:answer-quality fixture (five quality metrics + per-intent structural targeting) after the eval:quality gate subset. The instrument existed but was never run in CI. Dispatch-only and default-off: scheduled runs and existing dispatch shapes are byte-identical, and the step is informational by design (exit 0 without --targeting-floor) so quality gates stay owned by eval:quality. The tee'd log rides the existing artifact upload. Follows the #1003 input-only precedent; retrieval steps untouched. Claude-Session: https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9 Co-authored-by: Claude <noreply@anthropic.com>
Summary
Two optional
workflow_dispatchinputs oneval-canary.yml— the staging rails for Phase B and the pre-merge eval gap-closer from Phase D-1. Scheduled runs are completely unaffected (empty inputs resolve to today's exact behavior).rag_ranking_config— stages aRAG_RANKING_CONFIGJSON override for a single live eval run, the documented rollout path for tuned ranking weights (no code defaults touched; unset = production weights). A new validation step fails the run loudly on malformed JSON:resolveRankingConfig(src/lib/ranking-config.ts:183-191) silently falls back to production defaults on a parse error, which would turn a staged-weights eval into an accidental baseline and corrupt the before/after pair comparison. The step also echoes the active override into the log for auditability.ref— runs the eval from a branch/SHA (Phase D-1), closing the PR-template gap "CI cannot run the golden eval — needs live keys": ranking PRs can now gather live proof pre-merge via one dispatch.First consumer (next step, separate dispatch): the tuned 3-class config from the offline tuner on the fresh A-PR-2 snapshot —
document_lookuptitleSectionRelevance→0.9,table_thresholdclinicalEvidence→0.95,comparisonhybridRelevance→0.95 (proxy rank quality 0.833→1.0) — validated live against the re-gated #53 baseline (mrr@10 ≈0.892) with targets mrr@10 ≥0.90, irrelevant@10 ≤0.08, zero case regressions.Verification
npm run check:github-actions— pin check passed (no new actions; checkout pin unchanged)npm run check:ci-scope— passedRAG_RANKING_CONFIG override active: {...}, a malformed override fails at the validation step, and the weekly schedule continues running with empty inputsVerification not run: verify:pr-local— workflow-only change; the gates above are the repo's designated checks for.github/workflows/diffsRisk and rollout
refruns branch code with the eval job's live secrets — bounded becauseworkflow_dispatchrequires repository write access, and this repo has a single trusted collaborator; the input only widens which commit an already-trusted dispatcher can evaluate. No new secrets, no permission changes,concurrency/issue-reporting behavior untouched.Clinical Governance Preflight
Clinical KB Database(sjrfecxgysukkwxsowpy) — env block unchanged apart from the pass-through override variableNotes
f7f0b18).🤖 Generated with Claude Code
https://claude.ai/code/session_01EXsJcLrbZUXwnBeG91cVo9
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation